#ifndef HUFFMAN_TREE_H_INCLUDED
#define HUFFMAN_TREE_H_INCLUDED
#include <stdlib.h>
#include <stdio.h>

typedef struct huffno{
	int folha; // indica se eh um no folha
	int frequencia; //frequencia do tamanho
	int tamanho; //tamanho de bits do numero
	int codigoHuffTam; //tamanho do codigo huffman
	int codigoHuff; //codigo huffman calculado para esse tamanho
	struct huffno *dir, *esq; //para direita atribui numero 0, para esquerda 1
}HuffNo;

typedef struct hufftree{
	HuffNo *root; //ponteiro para o  no root
}HuffTree;

void initHuff(HuffTree*); //inicializa a arvore de huffamn
void constructTree(HuffTree*, HuffNo**, int); //constroi a arvore huffman atraves da hufftree, nos folha e numero de nos folha
void ordena(HuffNo** leafNode, int leafSize);
void createCodeHuff(HuffNo*, int*, int);
int getCodeHuff(HuffTree*, int, int*);
void getCodeHuffRec(HuffNo*, int, int*, int*);

#endif // HUFFMAN_TREE_H_INCLUDED
